home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-1.iso / games / nerak2.zip / BARTENDE.SCR < prev    next >
Text File  |  1995-09-24  |  5KB  |  208 lines

  1. !
  2. ! Default bartender script..
  3. !
  4. ! (c) DC Software, 1989-1995
  5. !
  6. ! Pending Enhancements
  7. !
  8. ! - This script has no voices.  For an example of voices, look at
  9. !   MERCHANT.SCR and HEALER.SCR
  10. !   
  11.  
  12. !------------------------------------------------------------------------!
  13. :@TALK ! Talk to the character !
  14. !------------------------------------------------------------------------!
  15.  
  16.   if player.hp = 0 then
  17.     writeln( player.name, " is dead!" );
  18.     STOP;
  19.   endif;
  20.  
  21.   if npc.picture >= 0 then
  22.     viewpcx(npc);
  23.   endif;
  24.  
  25.   loadtext( npc.text ); ! Get the NPC's text block !
  26.   loadvfl( npc.voice ); ! Get the NPC's voice block !
  27. ! First, say hello.. !
  28.   if NPC.V(0) > 0 then
  29.     writeln( "Hello ", player.name, ". What brings you back?" );
  30.   else
  31.     writeln( "Welcome to ", npc.name, ". How may I help you?" );
  32.     voice( "Hello" );
  33.   endif;
  34.  
  35. ! NowF, set some variables..
  36.   NPC.V(0) = 1;             ! From know on, remember we've been here
  37.   L(1) = 0;                 ! No business transactions have taken place
  38.   L(4) = npc.value / 5 + 1; ! Standard Tip Amount !
  39.  
  40. :LOOP
  41.  
  42.   L(3) = select$( "Buy Drink",  npc.value,
  43.                 "Give Tip",     L4,       ! Can't use X(y) on select !
  44.                 "Talk",         -1 );
  45.  
  46.   ON L(3) GOTO DRINK,TIP,XTALK;
  47.  
  48. :CSTOP
  49.   if L(1) = 0 THEN
  50.     writeln( "Hasta la vista, baby." );
  51.   else
  52.     writeln( "It's been a pleasure doing business with you!" );
  53.   endif;
  54.   goto XSTOP;
  55.  
  56. !
  57. ! Drink
  58. !
  59. :DRINK
  60.  
  61.   if group.gold < npc.value GOTO BROKE;
  62.  
  63.   dec( group.gold, npc.value );
  64.   ON L(1) GOTO DRINK1, DRINK2, DRINK3, DRINK4;
  65.  
  66.   writeln( "No more beer for you.." );
  67.   GOTO LOOP;
  68.  
  69. :DRINK1
  70.   writeln( ">Ahhh.. That really hit the spot.." );
  71.   inc(L1);
  72.   goto LOOP;
  73.  
  74. :DRINK2
  75.   writeln( ">Excellent brew, yes sir.." );
  76.   inc(L1);
  77.   goto LOOP;
  78.  
  79. :DRINK3
  80.   writeln( ">Glugh, glugh, glugh, hic!" );
  81.   inc(L1);
  82.   goto LOOP;
  83.  
  84. :DRINK4
  85.   writeln( ">Glugh, glugh, burp!  Sorry.." );
  86.   inc(L1);
  87.   if random(2) then     ! 50 % chance of getting sick..
  88.     player.poisoned = 1;
  89.     writeln( "(You feel sick..)" );
  90.   endif;
  91.   goto LOOP;
  92.  
  93. !
  94. ! Give TIP
  95. !
  96. :TIP
  97.  
  98.   if group.gold < L(4) GOTO BROKE;
  99.  
  100.   dec( group.gold, L(4) );
  101.  
  102.   ON L(1) GOTO TIP1, TIP2, TIP3, TIP4, TIP5;
  103.  
  104. :TIP1
  105.   writeln( ">Heard any good ones lately?" );
  106.   writeln( "(the bartender ignores you..)" );
  107.   inc( group.gold, L(4) );
  108.   goto LOOP;
  109.  
  110. :TIP2
  111.   writeln( ">It's pretty slow around here.." );
  112.   writeln( "It's the weather.. You'll get used to it.." );
  113.   goto LOOP;
  114.  
  115. :TIP3
  116.   loadhint;   ! Loads a random hint into a string variable !
  117.   writeln( S0 );
  118.   goto LOOP;
  119.  
  120. :TIP4
  121.   writeln( ">Heard any good.. Hic!.." );
  122.   writeln( "You're drunk.. You should leave now." );
  123.   goto LOOP;
  124.  
  125. :TIP5
  126.   writeln( ">Hic! 'scuse me.. Hic! Burp!" );
  127.   writeln( "No drunks allowed on the premises.." );
  128.   goto XSTOP;
  129.  
  130. :BROKE
  131.   writeln( "You don't have enough money!");
  132.   goto LOOP;
  133.  
  134. !
  135. ! Conversation
  136. !
  137. :XTALK
  138.   on L(1) GOTO TALK1, TALK2, CHAT;
  139.  
  140.   writeln( ">Hic! Hic! Burp! 'Scuse me.. Hic!" );
  141.   writeln( "You'd better watch your drinking buddy.." );
  142.   goto LOOP;
  143.  
  144. :TALK1
  145.   writeln( "Does this look like a social club?" );
  146.   goto LOOP;
  147.  
  148. :TALK2
  149.   writeln( "I'm busy.  Ask me again later.." );
  150.   goto LOOP;
  151.  
  152. :CHAT
  153.   writeln( "What would you like to talk about?" );
  154.  
  155. :CHAT1
  156.   L(3) = getstr("Name","Beer","Tip","Job","Bye");
  157.   if L(3) = -1 then 
  158.     writeln( "Ok." );
  159.     goto LOOP; ! Pressed ESCape !
  160.   endif;
  161.  
  162. ! First, see if the keyword typed is in the character's text block !
  163.   if dotext( S0 ) then
  164.     if L(3) = 4 goto XSTOP;
  165.     goto CHAT1;
  166.   endif;
  167.  
  168. ! It didn't, so try the predefined ones..
  169.   on L(3) goto CNAME, CBEER, CTIP, CJOB, CSTOP;
  170.   writeln( "I don't know anything about that.." );
  171.   goto CHAT1;
  172.  
  173. !-----------------------------------------------------------------!
  174. ! All STOPs now lead here so the screen can be restored if needed !
  175. !-----------------------------------------------------------------!
  176. :XSTOP
  177.   if npc.picture >= 0 then
  178.     paint(window); ! Assumes the picture fits in the window !
  179.   endif;
  180.   stats(-1); ! Refresh Statistics !
  181.   STOP;
  182.  
  183. ! Nope, try a 'DEFAULT' line
  184.   if not dotext( "DEFAULT" ) then
  185.     ! didn't have 'default' in the text block, so give standard default !
  186.     writeln( "I don't know anything about that!" );
  187.   endif;
  188.   goto CHAT1;
  189.  
  190. :CNAME
  191.    writeln( "My name is ", NPC.name, "." );
  192.    GOTO CHAT1;
  193.  
  194. :CBEER
  195.    writeln( "A beer sells for ", $npc.value, " the pretzels are free." );
  196.    GOTO CHAT1;
  197.  
  198. :CTIP
  199.    writeln( "Most people give ", $L4 );
  200.    GOTO CHAT1;
  201.  
  202. :CJOB
  203.    writeln( "I sell {beer}!" );
  204.    GOTO CHAT1;
  205.  
  206. ! Feel free to expand on this list.. !
  207.  
  208.